package com.csea;

/**
 * 聚合操作
 *
 * stream处理流程
 *      数据源
 *      数据转换
 *      获取结果
 *
 *  获取stream对象
 *      1.从集合或者数组中获取
 *          Collection.stream()
 *          Collection.parallelStream()
 *          Array.stream(T t)
 *      2. BufferReader
 *          BufferReder.lines() -> stream()
 *      3. 静态工厂
 *          java.util.stream.IntStream.range..
 *          java.nio.file.Files.walk()..
 *      4. 自定构建
 *          java.util.Spliterator
 *      5.  更多方式..
 *          Random.ints()
 *          Pattern.splitAsStream()..
 *
 *     中间操作API{intermediate}
 *     操作结果是一个Stream，中间操作可以有一个或多个连续的中间操作，需要注意的是，中间操作只记录操作方式，不做具体执行，
 *     直到结束操作发生时，才做数据的最终执行
 *
 *     中间操作过程：无状态，数据处理时，不受前置中间操作的影响
 *              map/filter/peek/parallel/sequential/unordered
 *                   有状态：数据处理时，受前置中间操作的影响
 *                 distinct/sorted/limit/skip
 *     终结操作，结束操作{Terminal}
 *     需要注意：一个Stream对象，只有一个Terminal操作，这个操作一旦发生，就会真实处理数据，生成对应的处理结果（不可逆）
 *      终结操作：非短路操作，当前的Stream对象必须处理完集合中所有的数据，才能得到处理结果
 *                  forEach/forEachOrdered/toArray/reduce/collect/min/max/cout/iterator
 *                短路操作：当前的Stream对象在处理过程中，一旦满足某个条件，就可以得到结果
 *                  anyMatch/allMatch/noneMatch/findFirst/findAny
 *                  对于无限大的Stream -> 有限大的Stream
 *
 * @author Csea
 * @title
 * @date 2019/12/12 20:01
 */
public class Test3 {

}
